Avoid ns16550 poll timeout underflow.
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Fri, 2 Dec 2005 10:05:49 +0000 (11:05 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Fri, 2 Dec 2005 10:05:49 +0000 (11:05 +0100)
Signed-off-by: Alex Williamson <alex.williamson@hp.com>
Signed-off-by: Keir Fraser <keir@xensource.com>
xen/drivers/char/ns16550.c

index 4595dc08ed1c1e48b87a774ca7083c8cc8b4d8a4..b7d24107b6698db8f228eb52bc4ac442c7f1e9da 100644 (file)
@@ -211,7 +211,8 @@ static void ns16550_init_postirq(struct serial_port *port)
     {
         /* Polled mode. Calculate time to fill RX FIFO and/or empty TX FIFO. */
         bits = uart->data_bits + uart->stop_bits + !!uart->parity;
-        uart->timeout_ms = (bits * port->tx_fifo_size * 1000) / uart->baud;
+        uart->timeout_ms = max_t(
+            unsigned int, 1, (bits * port->tx_fifo_size * 1000) / uart->baud);
         init_ac_timer(&uart->timer, ns16550_poll, port, 0);
         set_ac_timer(&uart->timer, NOW() + MILLISECS(uart->timeout_ms));
     }